/**
 * Created with IntelliJ IDEA
 * Description:
 * User:恋恋
 * Date:2022-12-12
 * Time:15:20
 */
class Thunder extends Throwable {};
class Box implements AutoCloseable {

    Box() {

        throw new RuntimeException();

    }

    public void close() throws Exception {

        System.out.println("close");

        throw new Exception();

    }

}

class EJavaFactory{

    public static void main(String args[]) {
        int c = 'c';
        System.out.println(c);

        try (Box box = new Box()) {

            box.close();

        }

        catch (Exception e) {

            System.out.println("catch:"+e);

        }

        finally {

            System.out.println("finally");

        }

    }
    //

}




//class Box implements AutoCloseable {
//
//    public void emptyContents() {
//
//        System.out.println("emptyContents");
//
//    }
//    //close方法是AutoCloseable类中的抽象方法，其中声明了异常
//    //close方法的作用是关闭资源，放弃全部内在资源，
//    //当存在try(){}的括号中，其中出现了异常，则close关闭失败
//    //()里面一般放对资源的申请，假如{}中出现了异常，()中的资源就会关闭，运行结束后会释放资源
////即没有{}中没有出现异常，就再次调用clone方法，表示关闭资源
//    public void close() {
//
//        System.out.println("close");
//
//    }
//
//}
//
//class EJavaFactorY{
//
//    public static void main(String args[]) {
//
//        try (Box box = new Box()) {
//
//            box.close();
//
//            box.emptyContents();
//
//        }
//
//    }
//
////}
//class Box implements AutoCloseable {
//
//    public void open() throws Exception {
//
//        throw new Exception();
//
//    }
//
//    public void close() throws Exception {
//
//        System.out.println("close");
//
//        throw new Exception();
//
//    }
//
//}
//
//class EJavaFactorY{
//
//    public static void main(String args[]) {
//
//        try (Box box = new Box()) {
//
//            box.open();
//
//        }
//
//        catch (Exception e) {
//
//            System.out.println("catch:"+e);
//
//            for (Throwable th : e.getSuppressed())
//                System.out.println(th);
//
//        }
//
//        finally {
//
//            System.out.println("finally");
//
//        }

//    }
//
//}